// 用户模型（教师和学生）
const { DataTypes } = require('sequelize');
const sequelize = require('../config/database');
const Class = require('./Class');

/**
 * 用户模型
 * 存储教师和学生的用户信息
 */
const User = sequelize.define('User', {
  /**
   * 用户ID，主键，自增
   */
  id: {
    type: DataTypes.INTEGER,
    primaryKey: true,
    autoIncrement: true,
    allowNull: false
  },
  /**
   * 用户名（学号）
   */
  username: {
    type: DataTypes.STRING(50),
    allowNull: false,
    comment: '用户名（学号）'
  },
  /**
   * 真实姓名
   */
  name: {
    type: DataTypes.STRING(50),
    allowNull: true,
    comment: '真实姓名'
  },
  /**
   * 密码
   */
  password: {
    type: DataTypes.STRING(100),
    allowNull: false,
    comment: '密码'
  },
  /**
   * 用户类型：teacher（教师）或student（学生）
   */
  role: {
    type: DataTypes.ENUM('teacher', 'student'),
    allowNull: false,
    defaultValue: 'student',
    comment: '用户类型'
  },
  /**
   * 班级ID，学生关联班级，教师可为null
   */
  classId: {
    type: DataTypes.INTEGER,
    allowNull: true,
    references: {
      model: Class,
      key: 'id'
    },
    comment: '班级ID'
  },
  /**
   * 创建时间
   */
  createdAt: {
    type: DataTypes.DATE,
    allowNull: false,
    defaultValue: DataTypes.NOW
  },
  /**
   * 更新时间
   */
  updatedAt: {
    type: DataTypes.DATE,
    allowNull: false,
    defaultValue: DataTypes.NOW
  }
}, {
  tableName: 'users',
  timestamps: true
});

// 关联关系
User.belongsTo(Class, { foreignKey: 'classId', as: 'classInfo' });
Class.hasMany(User, { foreignKey: 'classId', as: 'students' });

module.exports = User;